48 research outputs found

    Some History of Functional Programming Languages

    Get PDF
    We study a series of milestones leading to the emergence of lazy, higher order, polymorphically typed, purely functional programming languages. An invited lecture given at TFP12, St Andrews University, 12 June 2012

    Continuation-Passing C: compiling threads to events through continuations

    Get PDF
    In this paper, we introduce Continuation Passing C (CPC), a programming language for concurrent systems in which native and cooperative threads are unified and presented to the programmer as a single abstraction. The CPC compiler uses a compilation technique, based on the CPS transform, that yields efficient code and an extremely lightweight representation for contexts. We provide a proof of the correctness of our compilation scheme. We show in particular that lambda-lifting, a common compilation technique for functional languages, is also correct in an imperative language like C, under some conditions enforced by the CPC compiler. The current CPC compiler is mature enough to write substantial programs such as Hekate, a highly concurrent BitTorrent seeder. Our benchmark results show that CPC is as efficient, while using significantly less space, as the most efficient thread libraries available.Comment: Higher-Order and Symbolic Computation (2012). arXiv admin note: substantial text overlap with arXiv:1202.324

    Demonstrating lambda calculus reduction

    Get PDF
    We describe lambda calculus reduction strategies using big-step operational semantics and show how to efficiently trace such reductions. This is used in a web-based lambda calculus reducer, a

    Robust Evaluation of Expressions by Distributed Virtual Machines

    No full text

    VDM: Origins, hopes, and achievements

    No full text

    A Trace Model for Pointers and Objects

    No full text
    Object-oriented programs [Dahl, Goldberg, Meyer] are notoriously prone to the following kinds of error, which could lead to increasingly severe problems in the presence of tasking 1. Following a null pointer 2. Deletion of an accessible object 3. Failure to delete an inaccessible object 4. Interference due to equality of pointers 5. Inhibition of optimisation due to fear of (4) Type disciplines and object classes are a great help in avoiding these errors. Stronger protection may be obtainable with the help of assertions, particularly invariants, which are intended to be true before and after each call of a method that updates the structure of the heap. This note introduces a mathematical model and language for the formulation of assertions about objects and pointers, and suggests that a graphical calculus [Curtis, Lowe] may help in reasoning about program correctness. It deals with both garbage-collected heaps and the other kind. The theory is based on a trace model of graphs, using ideas from process algebra; and our development seeks to exploit this analogy as a unifying principle.

    Layout-sensitive Generalized Parsing

    No full text
    Abstract. The theory of context-free languages is well-understood and context-free parsers can be used as off-the-shelf tools in practice. In particular, to use a context-free parser framework, a user does not need to understand its internals but can specify a language declaratively as a grammar. However, many languages in practice are not context-free. One particularly important class of such languages is layout-sensitive languages, in which the structure of code depends on indentation and whitespace. For example, Python, Haskell, F#, and Markdown use indentation instead of curly braces to determine the block structure of code. Their parsers (and lexers) are not declaratively specified but hand-tuned to account for layout-sensitivity. To support declarative specifications of layout-sensitive languages, we propose a parsing framework in which a user can annotate layout in a grammar. Annotations take the form of constraints on the relative positioning of tokens in the parsed subtrees. For example, a user can declare that a block consists of statements that all start on the same column. We have integrated layout constraints into SDF and implemented a layoutsensitive generalized parser as an extension of generalized LR parsing. We evaluate the correctness and performance of our parser by parsing 33 290 open-source Haskell files. Layout-sensitive generalized parsing is easy to use, and its performance overhead compared to layout-insensitive parsing is small enough for practical application.

    Investigating the Role of Telomere and Telomerase Associated Genes and Proteins in Endometrial Cancer.

    No full text
    Endometrial cancer (EC) is the commonest gynaecological malignancy. Current prognostic markers are inadequate to accurately predict patient survival, necessitating novel prognostic markers, to improve treatment strategies. Telomerase has a unique role within the endometrium, whilst aberrant telomerase activity is a hallmark of many cancers. The aim of the current in silico study is to investigate the role of telomere and telomerase associated genes and proteins (TTAGPs) in EC to identify potential prognostic markers and therapeutic targets. Analysis of RNA-seq data from The Cancer Genome Atlas identified differentially expressed genes (DEGs) in EC (568 TTAGPs out of 3467) and ascertained DEGs associated with histological subtypes, higher grade endometrioid tumours and late stage EC. Functional analysis demonstrated that DEGs were predominantly involved in cell cycle regulation, while the survival analysis identified 69 DEGs associated with prognosis. The protein-protein interaction network constructed facilitated the identification of hub genes, enriched transcription factor binding sites and drugs that may target the network. Thus, our in silico methods distinguished many critical genes associated with telomere maintenance that were previously unknown to contribute to EC carcinogenesis and prognosis, including NOP56, WFS1, ANAPC4 and TUBB4A. Probing the prognostic and therapeutic utility of these novel TTAGP markers will form an exciting basis for future research
    corecore